package com.itboye.textileexpres.widget;

import com.itboye.textileexpres.util.Pullable;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
/***
 * 
 * @author 此类用于刷新的listview
 * @serial 在布局的时用以下方式进行布局，其他布局方式得到不到工具类中的属性，并用此刷新便于美化UI
 * <com.itboye.textileexpres.widget.PullToRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/refresh_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <include layout="@layout/refresh_head" />
    <!-- 支持所有实现Pullable接口的View -->

    <com.itboye.textileexpres.widget.PullableListView
        android:id="@+id/content_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:divider="@color/gray"
        android:dividerHeight="1dp" />

    <include layout="@layout/load_more" />

</com.itboye.textileexpres.widget.PullToRefreshLayout>
 *
 */
public class PullableListView extends ListView implements Pullable{
	public PullableListView(Context context)
	{
		super(context);
	}

	public PullableListView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}

	public PullableListView(Context context, AttributeSet attrs, int defStyle)
	{
		super(context, attrs, defStyle);
	}

	@Override
	public boolean canPullDown()
	{
		if (getCount() == 0)
		{
			// 没有item的时候也可以下拉刷新
			return true;
		} else if (getFirstVisiblePosition() == 0
				&& getChildAt(0).getTop() >= 0)
		{
			// 滑到ListView的顶部了
			return true;
		} else
			return false;
	}

	@Override
	public boolean canPullUp()
	{
		if (getCount() == 0)
		{
			// 没有item的时候也可以上拉加载
			return true;
		} else if (getLastVisiblePosition() == (getCount() - 1))
		{
			// 滑到底部了
			if (getChildAt(getLastVisiblePosition() - getFirstVisiblePosition()) != null
					&& getChildAt(
							getLastVisiblePosition()
									- getFirstVisiblePosition()).getBottom() <= getMeasuredHeight())
				return true;
		}
		return false;
	}
}
